home *** CD-ROM | disk | FTP | other *** search
- *** README.rjnoe.orig Fri Oct 28 11:36:38 1988
- --- README.rjnoe Fri Oct 28 11:36:38 1988
- ***************
- *** 0
-
- --- 1,144 -----
- + I have attempted porting the UNIX F77 version of Dungeon - which you posted
- + to Usenet about a year ago - to the AT&T 3B2/400 running UNIX System V
- + Release 3.0. What follows is a description of some of the things I needed
- + to change just to get it running on my system. I hope you find it useful.
- + The base patch level I worked from was 3 (including the "3.1" patch).
- +
- + 1. Different F77 Compilation System
- + First off, this UNIX system does not use the FORTRAN 77 compiler and
- + archive libraries used on previous versions of System V. What I have is
- + called FORTRAN 77 XLA+ Compilation System, Issue 1 Version 0. The F77
- + used on previous UNIX machines is sometimes called f77 1.1. This difference
- + required several changes to Makefile.sysv. Both the command to invoke
- + the compiler and options recognized by the compiler are different.
- + I have learned that there is a newer version of F77-XLA+ available from
- + AT&T; some of the problems I mention below might be fixed in that version.
- +
- + 2. No LOGICAL Arguments to Bitwise Intrinsic Functions
- + The F77-XLA+ compiler is picky about LOGICAL type arguments being passed
- + to the intrinsic bitwise (INTEGER) functions and(), or(), and not(). This
- + was very easily fixed by translating to the logical operators .AND., .OR.,
- + and .NOT..
- +
- + 3. No INTEGER Arguments to ichar() Intrinsic Function
- + The F77-XLA+ compiler is picky about INTEGER arguments passed to ichar().
- + They were redundant calls in all cases I found. (Just the INW() and UINW()
- + arrays were involved.)
- +
- + 4. No $ Edit Descriptor in FORMAT Statements
- + The F77-XLA+ compiler does not recognize the $ in FORMAT statements as a
- + means of suppressing newline at the end of an output operation. This was
- + apparently not an oversight; they documented its absence. I have found some
- + vestiges of the code which would have implemented it (e.g. an external symbol
- + in the I/O library called "F77nonl") but the capability is just not there.
- + I can find no substitute and have been putting up with having my ">" game
- + prompt not appear on the same line as my input.
- +
- + 5. FUNCTION INIT() Name Conflict
- + The external symbol "init" is used in the F77-XLA+ I/O library libfortI77.a
- + to indicate whether or not it has been initialized in the current process.
- + I merely changed the Dungeon function name to DINIT.
- +
- + 6. CLOSE() with Long Filename Causes Fatal Run-time Errors
- + There is a bug in the F77-XLA+ I/O library libfortI77.a that occurs when
- + trying to CLOSE() a unit that had been OPENed to a UNIX file with a long
- + pathname. Think of the F77 I/O subsystem as overlying the standard I/O
- + (stdio) subsystem. A F77 OPEN eventually calls fopen(3S) [3S: in the stdio
- + library] and stores the FILE * pointer which fopen returns into an element
- + of an array of structures corresponding to the unit number OPENed. When
- + the unit is CLOSEd, the file name passed to OPEN is copied into a character
- + array within this same structure, using strcpy(3C) [3C: in the C library].
- + (I assume this is to allow future reOPENing of the file, but haven't really
- + looked into this much.) No bounds or string length checking is done. So
- + when the filename is long (as might be expected for INDXFILE or TEXTFILE),
- + this overwrites the next F77 I/O unit structure with garbage. If the next
- + unit was being used, the pointer to the corresponding stdio structure is now
- + gone. If not, the next unit now appears to be in use because the FILE *
- + is no longer a NULL pointer and when the F77 code exits normally (e.g.
- + through STOP) it will try to clean up this unit. These considerations
- + led me to make the following changes:
- +
- + Since INDXFILE and TEXTFILE could not be CLOSEd once OPENed, I
- + moved INDXFILE from unit 1 to unit 3. Unit 1 is now used only
- + for "dsave.dat", which is short enough that it can be closed and
- + opened normally. TEXTFILE remains at unit 2.
- +
- + I dropped my exit.F source file containing SUBROUTINE EXIT (which
- + consisted entirely of one executable statement, STOP) and replaced
- + it with exit.c containing the C function void exit_(). Since STOP
- + tries to clean up F77 I/O unit structures that have been OPENed,
- + I circumvent this by doing a CALL EXIT in F77 which invokes the
- + C function exit_() on my system. The latter function simply calls
- + exit() in the C/stdio library, cleans up the stdio structures and
- + terminates the process without mucking with the screwy F77 I/O
- + subsystem.
- +
- + 7. CHARACTER Arguments Passed Inconsistently
- + The F77-XLA+ documentation indicates that a CHARACTER variable (or an
- + array of CHARACTER variables) is not quite passed by reference. Instead
- + of just passing the address of the variable (or base address of the array),
- + effectively what is passed is a pointer to a structure containing (in C):
- + struct { char *s; long l; } where s is the pointer to the CHARACTER variable
- + (or array) and l is its length. So dereferencing the passed pointer once
- + will give you s, the address of the CHARACTER variable. All fine and dandy,
- + but they DIDN'T TELL THE PEOPLE WHO CODED THE I/O LIBRARY! When a CHARACTER
- + array is passed to READ(), it interprets the structure pointer passed as the
- + address of the variable and starts overwriting the wrong place. The one place
- + I found this was in RDLINE() and I fixed it by changing the READ() BUFFER to
- + use an implied DO loop. What can I say, at least it works.
- +
- + 8. Large Amounts of I/O in One Statement Fail
- + There appears to be some not easily identifiable bug in the F77-XLA+ I/O
- + library which causes it to abort when writing large amounts of data in
- + one single WRITE(). I found this when attempting to save the game in
- + dsave.dat. I separated the largest arrays (notably the COMMON /OBJCTS/
- + arrays) into individual WRITEs and haven't had any further problems.
- + I changed the READs (for game restoration) to be identical, just for
- + consistency's sake.
- +
- +
- + There are probably other bugs I have not yet discovered. Already I am
- + suspicious of the random number generation on my system since I've never
- + had to take more than one whack at the troll before he's knocked out.
- + I'll keep looking at things like that and keep you posted, if you like.
- +
- +
- + There are also a few other things my compiler complains about that I did not
- + bother to fix:
- +
- + The C preprocessor (/lib/cpp) in System V Release 3 warns about extra
- + tokens on cpp lines like #else, #elif, and #endif. One way to suppress
- + these warnings is to add /* comment */ delimiters around the offending token:
- + #ifdef PDP
- + ...
- + #else /* PDP */
- + ...
- + #endif /* PDP */
- +
- + The F77-XLA+ compiler warns about a duplicate type statement for PRSWON in
- + FUNCTION BLOW in demons.F. Since PRSWON is already declared in parser.h, it
- + need not be declared again in demons.F, as it #includes parser.h.
- +
- + The F77-XLA+ compiler complains if the last statement before END in each
- + FUNCTION is not a RETURN. Specifically, in the following:
- + BALLOP in ballop.F
- + DINIT in dinit.F
- + LEX in np.F
- + SPARSE in np1.F
- + CYCLOP in villns.F
- + DINIT has FORMAT statements between RETURN and END, CYCLOP has a computed
- + GOTO just before the END, and the others all have unconditional GOTOs just
- + before their ENDs. If you ask me, the F77-XLA+ compiler is being a little
- + weird here.
- +
- + If there's anything I can do to help out with Dungeon, please let me know.
- + If no one else has done it, I'm toying with the idea of porting it to C.
- + Please let me know your opinion on that. Thanks.
- + --
- + Roger Noe rjnoe@arrakis.ece.uiuc.edu
- + University of Illinois
- + Department of Electrical and Computer Engineering
- + 248 Everitt Laboratory
- + 1406 West Green Street
- + Urbana, IL 61801 USA 40:06:39 N. 88:13:41 W.
- + +1 217 333 3496
- *** Makefile.sysv.orig Mon Oct 24 15:28:55 1988
- --- Makefile.sysv Mon Oct 24 15:28:54 1988
- ***************
- *** 1,3
- # Makefile for creating dungeon
- # Edit BIN DDIR and FFLAGS suitable for your system
- # Also, if you are running System V change the .F.o production
-
- --- 1,4 -----
- + F77 = fort
- # Makefile for creating dungeon
- # Edit BIN DDIR and FFLAGS suitable for your system
- # Also, if you are running System V change the .F.o production
- ***************
- *** 11,17
- # f77 -c $(FFLAGS) $*.F
- # For System V use the following production instead:
- @/lib/cpp $(CPPFLAGS) $*.F > $*.f
- ! f77 -c $(FFLAGS) $*.f
- rm $*.f
-
- # define SYSV if running System V or V7
-
- --- 12,18 -----
- # f77 -c $(FFLAGS) $*.F
- # For System V use the following production instead:
- @/lib/cpp $(CPPFLAGS) $*.F > $*.f
- ! $(F77) -c $(FFLAGS) $*.f
- rm $*.f
-
- # define SYSV if running System V or V7
- ***************
- *** 24,30
- #FOPTS = -q # -g -Ddebug
- # use -Nn650 for System V to increase default symbol table size
- # also, no -g flag (causes runtime errors)
- ! FOPTS = -q -Nn650
- # f77 compiler flags for pdp (64K split I/D)
- #FOPTS = -q -I2 -L1 -i -DPDP # -Ddebug
- FFLAGS = -O $(FOPTS)
-
- --- 25,32 -----
- #FOPTS = -q # -g -Ddebug
- # use -Nn650 for System V to increase default symbol table size
- # also, no -g flag (causes runtime errors)
- ! #FOPTS = -q -Nn650
- ! FOPTS =
- # f77 compiler flags for pdp (64K split I/D)
- #FOPTS = -q -I2 -L1 -i -DPDP # -Ddebug
- FFLAGS = -O $(FOPTS)
- ***************
- *** 51,57
- FSRC = actors.F ballop.F clockr.F demons.F\
- dgame.F dinit.F dmain.F dso1.F dso2.F\
- dso3.F dso4.F dso5.F dso6.F dso7.F\
- ! dsub.F dverb1.F dverb2.F exit.F gdt.F lightp.F\
- nobjs.F np.F np1.F np2.F np3.F nrooms.F objcts.F\
- rooms.F sobjs.F sverbs.F verbs.F villns.F
-
-
- --- 53,59 -----
- FSRC = actors.F ballop.F clockr.F demons.F\
- dgame.F dinit.F dmain.F dso1.F dso2.F\
- dso3.F dso4.F dso5.F dso6.F dso7.F\
- ! dsub.F dverb1.F dverb2.F gdt.F lightp.F\
- nobjs.F np.F np1.F np2.F np3.F nrooms.F objcts.F\
- rooms.F sobjs.F sverbs.F verbs.F villns.F
-
- ***************
- *** 55,61
- nobjs.F np.F np1.F np2.F np3.F nrooms.F objcts.F\
- rooms.F sobjs.F sverbs.F verbs.F villns.F
-
- ! CSRC = cinit.c cio.c cspeak.c decode.c lex.c listen.c rtim.c
-
- OBJS = actors.o ballop.o clockr.o demons.o\
- dgame.o dinit.o dmain.o dso1.o dso2.o\
-
- --- 57,63 -----
- nobjs.F np.F np1.F np2.F np3.F nrooms.F objcts.F\
- rooms.F sobjs.F sverbs.F verbs.F villns.F
-
- ! CSRC = cinit.c cio.c cspeak.c decode.c exit.c lex.c listen.c rtim.c
-
- OBJS = actors.o ballop.o clockr.o demons.o\
- dgame.o dinit.o dmain.o dso1.o dso2.o\
- ***************
- *** 72,78
- pdp: dungpdp speak listen dtext.dat
-
- dungeon: $(OBJS)
- ! f77 -o dungeon $(OBJS) $(LDFLAGS)
- @echo done
-
- dungpdp: $(OBJS) $(PDPOBJS)
-
- --- 74,80 -----
- pdp: dungpdp speak listen dtext.dat
-
- dungeon: $(OBJS)
- ! $(F77) -o dungeon $(OBJS) $(LDFLAGS)
- @echo done
-
- dungpdp: $(OBJS) $(PDPOBJS)
- ***************
- *** 98,105
- dinit.o: dinit.F
- # f77 $(FFLAGS) -DDDIR=$(DDIR) $(WIZDEF) -c dinit.F
- # For System V use the following instead:
- ! @/lib/cpp $(CPPFLAGS) dinit.F > dinit.f
- ! f77 $(FFLAGS) -DDDIR=$(DDIR) $(WIZDEF) -c dinit.f
- rm $*.f
-
- # uncomment the following for Suns to get around an optimizer bug
-
- --- 100,107 -----
- dinit.o: dinit.F
- # f77 $(FFLAGS) -DDDIR=$(DDIR) $(WIZDEF) -c dinit.F
- # For System V use the following instead:
- ! @/lib/cpp $(CPPFLAGS) -DDDIR=$(DDIR) $(WIZDEF) dinit.F > dinit.f
- ! $(F77) -c $(FFLAGS) dinit.f
- rm $*.f
-
- # uncomment the following for Suns to get around an optimizer bug
- *** dinit.F.orig Mon Oct 24 15:28:55 1988
- --- dinit.F Mon Oct 24 15:28:55 1988
- ***************
- *** 18,24
- C
- C DECLARATIONS
- C
- ! LOGICAL FUNCTION INIT(X)
- IMPLICIT INTEGER (A-Z)
- #ifndef PDP
- LOGICAL PROTCT
-
- --- 18,24 -----
- C
- C DECLARATIONS
- C
- ! LOGICAL FUNCTION DINIT(X)
- IMPLICIT INTEGER (A-Z)
- #ifndef PDP
- LOGICAL PROTCT
- ***************
- *** 153,159
- FROMDR=0
- SCOLRM=0
- SCOLAC=0
- ! INIT=.FALSE.
- MLOC=MRB
- C
- C INIT, PAGE 4
-
- --- 153,159 -----
- FROMDR=0
- SCOLRM=0
- SCOLAC=0
- ! DINIT=.FALSE.
- MLOC=MRB
- C
- C INIT, PAGE 4
- ***************
- *** 247,253
- HERE=AROOM(WINNER)
- THFPOS=OROOM(THIEF)
- BLOC=OROOM(BALLO)
- ! INIT=.TRUE.
- #ifdef debug
- C
- C Normally, PRSFLG is setable in gdt to allow seeing various
-
- --- 247,253 -----
- HERE=AROOM(WINNER)
- THFPOS=OROOM(THIEF)
- BLOC=OROOM(BALLO)
- ! DINIT=.TRUE.
- #ifdef debug
- C
- C Normally, PRSFLG is setable in gdt to allow seeing various
- ***************
- *** 266,272
- 1925 continue
- END
- #else PDP
- ! 10000 INIT=.FALSE.
- C !ASSUME INIT FAILS.
- MMAX=1050
- C !SET UP ARRAY LIMITS.
-
- --- 266,272 -----
- 1925 continue
- END
- #else PDP
- ! 10000 DINIT=.FALSE.
- C !ASSUME INIT FAILS.
- MMAX=1050
- C !SET UP ARRAY LIMITS.
- ***************
- *** 449,455
- C
- C NOW RESTORE FROM EXISTING INDEX FILE.
- C
- ! OPEN(UNIT=1,file=INDXFILE,status='OLD',
- #ifdef XELOS
- & FORM='FORMATTED',ACCESS='SEQUENTIAL',ERR=1900,recl=1)
- #else
-
- --- 449,455 -----
- C
- C NOW RESTORE FROM EXISTING INDEX FILE.
- C
- ! OPEN(UNIT=3,file=INDXFILE,status='OLD',
- #ifdef XELOS
- & FORM='FORMATTED',ACCESS='SEQUENTIAL',ERR=1900,recl=1)
- #else
- ***************
- *** 455,462
- #else
- & FORM='FORMATTED',ACCESS='SEQUENTIAL',ERR=1900)
- #endif
- ! rewind(unit=1, err=1900)
- ! READ(1,130) I,J,K
- C !GET VERSION.
- IF((I.NE.VMAJ).OR.(J.NE.VMIN))
- & GO TO 1925
-
- --- 455,462 -----
- #else
- & FORM='FORMATTED',ACCESS='SEQUENTIAL',ERR=1900)
- #endif
- ! rewind(unit=3, err=1900)
- ! READ(3,130) I,J,K
- C !GET VERSION.
- IF((I.NE.VMAJ).OR.(J.NE.VMIN))
- & GO TO 1925
- ***************
- *** 474,483
- 150 FORMAT(' RESTORING FROM "dindx.dat"')
- #endif NOCC
- #endif debug
- ! READ(1,130) MXSCOR,STRBIT,EGMXSC
- ! READ(1,130) RLNT,RDESC2,RDESC1,REXIT,RACTIO,RVAL,RFLAG
- ! READ(1,130) XLNT,TRAVEL
- ! READ(1,130) OLNT,ODESC1,ODESC2,ODESCO,OACTIO,OFLAG1,OFLAG2,
- & OFVAL,OTVAL,OSIZE,OCAPAC,OROOM,OADV,OCAN,
- & OREAD
- READ(1,130) R2LNT,OROOM2,RROOM2
-
- --- 474,483 -----
- 150 FORMAT(' RESTORING FROM "dindx.dat"')
- #endif NOCC
- #endif debug
- ! READ(3,130) MXSCOR,STRBIT,EGMXSC
- ! READ(3,130) RLNT,RDESC2,RDESC1,REXIT,RACTIO,RVAL,RFLAG
- ! READ(3,130) XLNT,TRAVEL
- ! READ(3,130) OLNT,ODESC1,ODESC2,ODESCO,OACTIO,OFLAG1,OFLAG2,
- & OFVAL,OTVAL,OSIZE,OCAPAC,OROOM,OADV,OCAN,
- & OREAD
- READ(3,130) R2LNT,OROOM2,RROOM2
- ***************
- *** 480,491
- READ(1,130) OLNT,ODESC1,ODESC2,ODESCO,OACTIO,OFLAG1,OFLAG2,
- & OFVAL,OTVAL,OSIZE,OCAPAC,OROOM,OADV,OCAN,
- & OREAD
- ! READ(1,130) R2LNT,OROOM2,RROOM2
- ! READ(1,130) CLNT,CTICK,CACTIO
- ! READ(1,135) CFLAG
- ! READ(1,130) VLNT,VILLNS,VPROB,VOPPS,VBEST,VMELEE
- ! READ(1,130) ALNT,AROOM,ASCORE,AVEHIC,AOBJ,AACTIO,ASTREN,AFLAG
- ! READ(1,130) MBASE,MLNT,RTEXT
- C
- CLOSE(1)
- GO TO 1025
-
- --- 480,491 -----
- READ(3,130) OLNT,ODESC1,ODESC2,ODESCO,OACTIO,OFLAG1,OFLAG2,
- & OFVAL,OTVAL,OSIZE,OCAPAC,OROOM,OADV,OCAN,
- & OREAD
- ! READ(3,130) R2LNT,OROOM2,RROOM2
- ! READ(3,130) CLNT,CTICK,CACTIO
- ! READ(3,135) CFLAG
- ! READ(3,130) VLNT,VILLNS,VPROB,VOPPS,VBEST,VMELEE
- ! READ(3,130) ALNT,AROOM,ASCORE,AVEHIC,AOBJ,AACTIO,ASTREN,AFLAG
- ! READ(3,130) MBASE,MLNT,RTEXT
- C
- C don't CLOSE index file, even though it won't be used again
- C
- ***************
- *** 487,493
- READ(1,130) ALNT,AROOM,ASCORE,AVEHIC,AOBJ,AACTIO,ASTREN,AFLAG
- READ(1,130) MBASE,MLNT,RTEXT
- C
- ! CLOSE(1)
- GO TO 1025
- C !INIT DONE.
- C
-
- --- 487,494 -----
- READ(3,130) ALNT,AROOM,ASCORE,AVEHIC,AOBJ,AACTIO,ASTREN,AFLAG
- READ(3,130) MBASE,MLNT,RTEXT
- C
- ! C don't CLOSE index file, even though it won't be used again
- ! C
- GO TO 1025
- C !INIT DONE.
- C
- ***************
- *** 511,517
- HERE=AROOM(WINNER)
- THFPOS=OROOM(THIEF)
- BLOC=OROOM(BALLO)
- ! INIT=.TRUE.
- C
- #ifdef debug
- PRINT 1050,RLNT,RMAX,XLNT,XMAX,OLNT,OMAX,MLNT,MMAX,
-
- --- 512,518 -----
- HERE=AROOM(WINNER)
- THFPOS=OROOM(THIEF)
- BLOC=OROOM(BALLO)
- ! DINIT=.TRUE.
- C
- #ifdef debug
- PRINT 1050,RLNT,RMAX,XLNT,XMAX,OLNT,OMAX,MLNT,MMAX,
- *** dmain.F.orig Mon Oct 24 15:28:56 1988
- --- dmain.F Mon Oct 24 15:28:55 1988
- ***************
- *** 9,15
- C DECLARATIONS
- C
- IMPLICIT INTEGER (A-Z)
- ! LOGICAL INIT
- #include "parser.h"
- #include "gamestate.h"
- #include "state.h"
-
- --- 9,15 -----
- C DECLARATIONS
- C
- IMPLICIT INTEGER (A-Z)
- ! LOGICAL DINIT
- #include "parser.h"
- #include "gamestate.h"
- #include "state.h"
- ***************
- *** 193,199
- C 1) INITIALIZE DATA STRUCTURES
- C 2) PLAY GAME
- C
- ! IF(INIT(X)) CALL GAME
- C !IF INIT, PLAY GAME.
- CALL EXIT
- C !DONE
-
- --- 193,199 -----
- C 1) INITIALIZE DATA STRUCTURES
- C 2) PLAY GAME
- C
- ! IF(DINIT(X)) CALL GAME
- C !IF INIT, PLAY GAME.
- CALL EXIT
- C !DONE
- *** dso3.F.orig Mon Oct 24 15:28:56 1988
- --- dso3.F Mon Oct 24 15:28:56 1988
- ***************
- *** 64,70
- C OBJECT IS ON LIST... IS IT A MATCH?
- C
- IF(and(OFLAG1(I),VISIBT).EQ.0) GO TO 1000
- ! IF(and(not(NOCARE),(and(OFLAG1(I),TAKEBT).EQ.0)) .OR.
- & ((and(OFLAG1(I),F1).EQ.0).AND.
- & (and(OFLAG2(I),F2).EQ.0))) GO TO 500
- IF(FWIM.EQ.0) GO TO 400
-
- --- 64,70 -----
- C OBJECT IS ON LIST... IS IT A MATCH?
- C
- IF(and(OFLAG1(I),VISIBT).EQ.0) GO TO 1000
- ! IF( ((.NOT. NOCARE) .AND. (and(OFLAG1(I),TAKEBT).EQ.0)) .OR.
- & ((and(OFLAG1(I),F1).EQ.0).AND.
- & (and(OFLAG2(I),F2).EQ.0))) GO TO 500
- IF(FWIM.EQ.0) GO TO 400
- *** dso7.F.orig Mon Oct 24 15:28:56 1988
- --- dso7.F Mon Oct 24 15:28:56 1988
- ***************
- *** 23,29
- C !UNBIAS, COMPUTE SUMS.
- UKEYW(I)=char(ichar(KEYW(I))-64)
- IF(INW(J).LE.char(64)) J=1
- ! UINW(I)=ichar(ichar(INW(J))-64)
- UKEYWS=UKEYWS+ichar(UKEYW(I))
- UINWS=UINWS+UINW(I)
- J=J+1
-
- --- 23,29 -----
- C !UNBIAS, COMPUTE SUMS.
- UKEYW(I)=char(ichar(KEYW(I))-64)
- IF(INW(J).LE.char(64)) J=1
- ! UINW(I)=ichar(INW(J))-64
- UKEYWS=UKEYWS+ichar(UKEYW(I))
- UINWS=UINWS+UINW(I)
- J=J+1
- ***************
- *** 32,38
- USUM=MOD(UINWS,8)+(8*MOD(UKEYWS,8))
- C !COMPUTE MASK.
- DO 200 I=1,6
- ! J=and(xor(xor(ichar(UINW(I)),ichar(UKEYW(I))),USUM),31)
- USUM=MOD(USUM+1,32)
- IF(J.GT.26) J=MOD(J,26)
- OUTW(I)=char(MAX0(1,J)+64)
-
- --- 32,38 -----
- USUM=MOD(UINWS,8)+(8*MOD(UKEYWS,8))
- C !COMPUTE MASK.
- DO 200 I=1,6
- ! J=and(xor(xor(UINW(I),ichar(UKEYW(I))),USUM),31)
- USUM=MOD(USUM+1,32)
- IF(J.GT.26) J=MOD(J,26)
- OUTW(I)=char(MAX0(1,J)+64)
- *** dsub.F.orig Mon Oct 24 15:28:57 1988
- --- dsub.F Mon Oct 24 15:28:56 1988
- ***************
- *** 391,401
- C !INVOLUNTARY EXIT.
- 1100 CALL SCORE(.FALSE.)
- C !TELL SCORE.
- ! #ifdef PDP
- ! C file closed in exit routine
- ! #else
- ! CLOSE(DBCH)
- ! #endif PDP
- CALL EXIT
- C
- END
-
- --- 391,397 -----
- C !INVOLUNTARY EXIT.
- 1100 CALL SCORE(.FALSE.)
- C !TELL SCORE.
- ! C don't close DBCH, just exit
- CALL EXIT
- C
- END
- *** dverb2.F.orig Mon Oct 24 15:28:57 1988
- --- dverb2.F Mon Oct 24 15:28:57 1988
- ***************
- *** 91,99
- & SWDACT,SWDSTA,CPVEC
- WRITE(1) I,MOVES,DEATHS,RWSCOR,EGSCOR,MXLOAD,
- & LTSHFT,BLOC,MUNGRM,HS,FROMDR,SCOLRM,SCOLAC
- ! WRITE(1) ODESC1,ODESC2,OFLAG1,OFLAG2,OFVAL,OTVAL,
- ! & OSIZE,OCAPAC,OROOM,OADV,OCAN
- ! WRITE(1) RVAL,RFLAG
- WRITE(1) AROOM,ASCORE,AVEHIC,ASTREN,AFLAG
- WRITE(1) FLAGS,SWITCH,VPROB,CFLAG,CTICK
- C
-
- --- 91,109 -----
- & SWDACT,SWDSTA,CPVEC
- WRITE(1) I,MOVES,DEATHS,RWSCOR,EGSCOR,MXLOAD,
- & LTSHFT,BLOC,MUNGRM,HS,FROMDR,SCOLRM,SCOLAC
- ! WRITE(1) ODESC1
- ! WRITE(1) ODESC2
- ! WRITE(1) OFLAG1
- ! WRITE(1) OFLAG2
- ! WRITE(1) OFVAL
- ! WRITE(1) OTVAL
- ! WRITE(1) OSIZE
- ! WRITE(1) OCAPAC
- ! WRITE(1) OROOM
- ! WRITE(1) OADV
- ! WRITE(1) OCAN
- ! WRITE(1) RVAL
- ! WRITE(1) RFLAG
- WRITE(1) AROOM,ASCORE,AVEHIC,ASTREN,AFLAG
- WRITE(1) FLAGS,SWITCH,VPROB,CFLAG,CTICK
- C
- ***************
- *** 195,201
- rewind (unit=1, err=100)
- C
- READ(1) I,J,K
- ! IF(or((I.NE.VMAJ),(J.NE.VMIN))) GO TO 200
- C
- READ(1) WINNER,HERE,THFPOS,TELFLG,THFFLG,THFACT,
- & SWDACT,SWDSTA,CPVEC
-
- --- 205,211 -----
- rewind (unit=1, err=100)
- C
- READ(1) I,J,K
- ! IF(((I.NE.VMAJ) .OR. (J.NE.VMIN))) GO TO 200
- C
- READ(1) WINNER,HERE,THFPOS,TELFLG,THFFLG,THFACT,
- & SWDACT,SWDSTA,CPVEC
- ***************
- *** 201,209
- & SWDACT,SWDSTA,CPVEC
- READ(1) PLTIME,MOVES,DEATHS,RWSCOR,EGSCOR,MXLOAD,
- & LTSHFT,BLOC,MUNGRM,HS,FROMDR,SCOLRM,SCOLAC
- ! READ(1) ODESC1,ODESC2,OFLAG1,OFLAG2,OFVAL,OTVAL,
- ! & OSIZE,OCAPAC,OROOM,OADV,OCAN
- ! READ(1) RVAL,RFLAG
- READ(1) AROOM,ASCORE,AVEHIC,ASTREN,AFLAG
- READ(1) FLAGS,SWITCH,VPROB,CFLAG,CTICK
- C
-
- --- 211,229 -----
- & SWDACT,SWDSTA,CPVEC
- READ(1) PLTIME,MOVES,DEATHS,RWSCOR,EGSCOR,MXLOAD,
- & LTSHFT,BLOC,MUNGRM,HS,FROMDR,SCOLRM,SCOLAC
- ! READ(1) ODESC1
- ! READ(1) ODESC2
- ! READ(1) OFLAG1
- ! READ(1) OFLAG2
- ! READ(1) OFVAL
- ! READ(1) OTVAL
- ! READ(1) OSIZE
- ! READ(1) OCAPAC
- ! READ(1) OROOM
- ! READ(1) OADV
- ! READ(1) OCAN
- ! READ(1) RVAL
- ! READ(1) RFLAG
- READ(1) AROOM,ASCORE,AVEHIC,ASTREN,AFLAG
- READ(1) FLAGS,SWITCH,VPROB,CFLAG,CTICK
- C
- ***************
- *** 421,427
- C
- C C7- FROBOZZ FLAG (BANK ALARM)
- C
- ! 7000 FROBZF=and((OROOM(BILLS).NE.0),(OROOM(PORTR).NE.0))
- RETURN
- C CXAPPL, PAGE 3
- C
-
- --- 441,447 -----
- C
- C C7- FROBOZZ FLAG (BANK ALARM)
- C
- ! 7000 FROBZF=((OROOM(BILLS).NE.0) .AND. (OROOM(PORTR).NE.0))
- RETURN
- C CXAPPL, PAGE 3
- C
- *** exit.c.orig Mon Oct 24 15:28:57 1988
- --- exit.c Mon Oct 24 15:28:57 1988
- ***************
- *** 0
-
- --- 1 -----
- + void exit_() { exit(0); }
- *** gdt.F.orig Mon Oct 24 15:28:58 1988
- --- gdt.F Mon Oct 24 15:28:58 1988
- ***************
- *** 102,108
- GO TO 2000
- C
- #ifdef NOCC
- ! 200 FORMAT('GDT>',$)
- #else NOCC
- 200 FORMAT(' GDT>',$)
- #endif NOCC
-
- --- 102,108 -----
- GO TO 2000
- C
- #ifdef NOCC
- ! 200 FORMAT('GDT>')
- #else NOCC
- 200 FORMAT(' GDT>',$)
- #endif NOCC
- ***************
- *** 115,123
- 230 FORMAT(2I6)
- 240 FORMAT(I6)
- #ifdef NOCC
- ! 225 FORMAT('Limits: ',$)
- ! 235 FORMAT('Entry: ',$)
- ! 245 FORMAT('Idx,Ary: ',$)
- #else NOCC
- 225 FORMAT(' Limits: ',$)
- 235 FORMAT(' Entry: ',$)
-
- --- 115,123 -----
- 230 FORMAT(2I6)
- 240 FORMAT(I6)
- #ifdef NOCC
- ! 225 FORMAT('Limits: ')
- ! 235 FORMAT('Entry: ')
- ! 245 FORMAT('Idx,Ary: ')
- #else NOCC
- 225 FORMAT(' Limits: ',$)
- 235 FORMAT(' Entry: ',$)
- ***************
- *** 344,350
- GO TO 2000
- C
- #ifdef NOCC
- ! 480 FORMAT('Old=',L2,6X,'New= ',$)
- #else NOCC
- 480 FORMAT(' Old=',L2,6X,'New= ',$)
- #endif NOCC
-
- --- 344,350 -----
- GO TO 2000
- C
- #ifdef NOCC
- ! 480 FORMAT('Old=',L2,6X,'New= ')
- #else NOCC
- 480 FORMAT(' Old=',L2,6X,'New= ',$)
- #endif NOCC
- ***************
- *** 528,534
- GO TO 2000
- C
- #ifdef NOCC
- ! 590 FORMAT('Old= ',I6,6X,'New= ',$)
- #else NOCC
- 590 FORMAT(' Old= ',I6,6X,'New= ',$)
- #endif NOCC
-
- --- 528,534 -----
- GO TO 2000
- C
- #ifdef NOCC
- ! 590 FORMAT('Old= ',I6,6X,'New= ')
- #else NOCC
- 590 FORMAT(' Old= ',I6,6X,'New= ',$)
- #endif NOCC
- ***************
- *** 574,580
- GO TO 2000
- C
- #ifdef NOCC
- ! 610 FORMAT('Old= ',I6,6X,'New= ',$)
- #else NOCC
- 610 FORMAT(' Old= ',I6,6X,'New= ',$)
- #endif NOCC
-
- --- 574,580 -----
- GO TO 2000
- C
- #ifdef NOCC
- ! 610 FORMAT('Old= ',I6,6X,'New= ')
- #else NOCC
- 610 FORMAT(' Old= ',I6,6X,'New= ',$)
- #endif NOCC
- *** np.F.orig Mon Oct 24 15:28:58 1988
- --- np.F Mon Oct 24 15:28:58 1988
- ***************
- *** 25,31
- 10 WRITE(OUTCH,50)
- C !PROMPT FOR GAME.
- #ifdef NOCC
- ! 50 FORMAT('>',$)
- #else NOCC
- 50 FORMAT(' >',$)
- #endif NOCC
-
- --- 25,31 -----
- 10 WRITE(OUTCH,50)
- C !PROMPT FOR GAME.
- #ifdef NOCC
- ! 50 FORMAT('>')
- #else NOCC
- 50 FORMAT(' >',$)
- #endif NOCC
- ***************
- *** 30,36
- 50 FORMAT(' >',$)
- #endif NOCC
-
- ! 90 READ(INPCH,100, END=210) BUFFER
- 100 FORMAT(78A1)
-
- DO 200 LENGTH=78,1,-1
-
- --- 30,36 -----
- 50 FORMAT(' >',$)
- #endif NOCC
-
- ! 90 READ(INPCH,100,END=210) (BUFFER(LENGTH),LENGTH=1,78)
- 100 FORMAT(78A1)
-
- DO 200 LENGTH=78,1,-1
- ***************
- *** 38,44
- 200 CONTINUE
- GO TO 5
- C !END OF FILE
- ! 210 STOP
- C !TRY AGAIN.
-
- C
-
- --- 38,44 -----
- 200 CONTINUE
- GO TO 5
- C !END OF FILE
- ! 210 CALL EXIT
- C !TRY AGAIN.
-
- C
- ***************
- *** 55,61
-
- C CONVERT TO UPPER CASE
- 300 DO 400 I=1,LENGTH
- ! IF(and((BUFFER(I).GE.'a'),(BUFFER(I).LE.'z')))
- & BUFFER(I)=char(ichar(BUFFER(I))-32)
- 400 CONTINUE
- #endif PDP
-
- --- 55,61 -----
-
- C CONVERT TO UPPER CASE
- 300 DO 400 I=1,LENGTH
- ! IF(((BUFFER(I).GE.'a') .AND. (BUFFER(I).LE.'z')))
- & BUFFER(I)=char(ichar(BUFFER(I))-32)
- 400 CONTINUE
- #endif PDP
- ***************
- *** 105,111
- C !ECHO MODE, FORCE FAIL.
- IF(.NOT.SYNMCH(X)) GO TO 100
- C !DO SYN MATCH.
- ! IF(and((PRSO.GT.0),(PRSO.LT.XMIN))) LASTIT=PRSO
- C
- C SUCCESSFUL PARSE OR SUCCESSFUL VALIDATION
- C
-
- --- 105,111 -----
- C !ECHO MODE, FORCE FAIL.
- IF(.NOT.SYNMCH(X)) GO TO 100
- C !DO SYN MATCH.
- ! IF(((PRSO.GT.0) .AND. (PRSO.LT.XMIN))) LASTIT=PRSO
- C
- C SUCCESSFUL PARSE OR SUCCESSFUL VALIDATION
- C
- ***************
- *** 207,213
- C !SPACE?
- DO 500 I=1,9,3
- C !SCH FOR CHAR.
- ! IF(and((J.GE.DLIMIT(I)),(J.LE.DLIMIT(I+1))))
- & GO TO 4000
- 500 CONTINUE
- C
-
- --- 207,213 -----
- C !SPACE?
- DO 500 I=1,9,3
- C !SCH FOR CHAR.
- ! IF(((J.GE.DLIMIT(I)) .AND. (J.LE.DLIMIT(I+1))))
- & GO TO 4000
- 500 CONTINUE
- C
- ***************
- *** 219,225
- C
- 1000 IF(PRSCON.GT.INLNT) PRSCON=1
- C !FORCE PARSE RESTART.
- ! IF(and((CP.EQ.0),(OP.EQ.1))) RETURN
- IF(CP.EQ.0) OP=OP-2
- C !ANY LAST WORD?
- LEX=.TRUE.
-
- --- 219,225 -----
- C
- 1000 IF(PRSCON.GT.INLNT) PRSCON=1
- C !FORCE PARSE RESTART.
- ! IF(((CP.EQ.0) .AND. (OP.EQ.1))) RETURN
- IF(CP.EQ.0) OP=OP-2
- C !ANY LAST WORD?
- LEX=.TRUE.
- *** sverbs.F.orig Mon Oct 24 15:28:59 1988
- --- sverbs.F Mon Oct 24 15:28:58 1988
- ***************
- *** 293,303
- C !TELLL SCORE.
- IF(.NOT.YESNO(343,0,0)) RETURN
- C !ASK FOR Y/N DECISION.
- ! #ifdef PDP
- ! C close routine moved to exit for pdp version
- ! #else
- ! CLOSE (DBCH)
- ! #endif PDP
- CALL EXIT
- C !BYE.
- C SVERBS, PAGE 4
-
- --- 293,299 -----
- C !TELLL SCORE.
- IF(.NOT.YESNO(343,0,0)) RETURN
- C !ASK FOR Y/N DECISION.
- ! C don't close DBCH, just exit
- CALL EXIT
- C !BYE.
- C SVERBS, PAGE 4
-
-
-